package br.org.ccb.ccbadm.auth;

import br.org.ccb.ccbadm.model.Usuario;
import br.org.ccb.ccbadm.connection.PersistenceFactory;
import br.org.ccb.ccbadm.model.Administracao;
import java.util.LinkedList;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import org.springframework.security.core.context.SecurityContextHolder;

/**
 *
 * @author alanoliveira
 */
public class LoggedUser {


    /*
     * retorna o usuário da sessão
     */
    static public Usuario getLoggedUser() {
        Usuario usuario = null;

        if (usuario == null) {
            //UserDetails user = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getName();
            //user.getUsername();

            Query query = PersistenceFactory.getPersistenceTransaction().getEntityManager().createNamedQuery("Usuario.findByLogin");
            query.setParameter("login", SecurityContextHolder.getContext().getAuthentication().getName());

            try {
                usuario = (Usuario) query.getSingleResult();
            } catch (NoResultException nre) {
                return null;
            }
            return usuario;
        } else {
            return usuario;
        }

    }
/*
    static public List<Grupo> getGrupoUsuario() {
        List<Grupo> grupos = null;
        if (grupos == null) {
            grupos = new LinkedList();
            for (Permissao perm : LoggedUser.getLoggedUser().getPermissaoList()) {
                grupos.add(perm.getGrupo());
            }
        }

        return grupos;
    } */
    

    static public List<Administracao> getAdministracao() {
        List<Administracao> administracao = null;
        if (administracao == null) {
            administracao = new LinkedList();
            for (Administracao ue : LoggedUser.getLoggedUser().getAdministracao()) {
                administracao.add(ue);
            }
            
        }

        return administracao;
    }

}
